#pragma once

#include "CProjection.h"
class CPlaneProjection :
	public CProjection
{
public: 
	static HRESULT Create(CDependencyObject * * ppObject, CREATEPARAMETERS * pCreate);
	static HRESULT GetProjectionMatrix(struct Xcp_IDependencyObject * pObject, XUINT32 cArgs, CValue * pArgs, CValue * pResult);
	virtual XUINT32 GetTypeIndex() const;

private: 
	CPlaneProjection(CCoreServices *);
protected: 
	virtual ~CPlaneProjection();
public: 
	virtual XBOOL Is2DAligned();
	virtual HRESULT CloneForTarget(CRenderTarget * pRenderTarget, CProjection * * ppProjection);
protected: 
	virtual void Update3DTransform(XFLOAT rWidth, XFLOAT rHeight);
	virtual void Update3DProjection();
	virtual XUINT32 GetFrustumClipMask();
public: 
	XFLOAT m_rLocalOffsetX;
	XFLOAT m_rLocalOffsetY;
	XFLOAT m_rLocalOffsetZ;
	XFLOAT m_rRotationX;
	XFLOAT m_rRotationY;
	XFLOAT m_rRotationZ;
	XFLOAT m_rCenterOfRotationX;
	XFLOAT m_rCenterOfRotationY;
	XFLOAT m_rCenterOfRotationZ;
	XFLOAT m_rGlobalOffsetX;
	XFLOAT m_rGlobalOffsetY;
	XFLOAT m_rGlobalOffsetZ;
	static const XBOOL m_cbRightHanded;
	static const XFLOAT m_crNearPlane;
	static const XFLOAT m_crFarPlane;
	static const XFLOAT m_crFieldOfView;
	static const XFLOAT m_crZOffset;


};